package jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 执行DQL语句
 */
public class JDBCDemo4 {
    public static void main(String[] args) {
        /*
            查看所有老师的id,name,salary,title

            SELECT id,name,salary,title
            FROM teacher
         */
        try(
           //Connection实现了AutoCloseable接口，因此可以使用自动关闭特性
           Connection connection = DBUtil.getConnection();
        ){
            Statement statement = connection.createStatement();
            String sql = "SELECT id,name,salary,title " +
                         "FROM teacher";
            /*
                Statement提供了专门用于执行DQL语句的方法
                ResultSet executeQuery(String sql)
                该方法执行后返回一个查询结果集
             */
            ResultSet rs = statement.executeQuery(sql);
            /*
                ResultSet的每一个实例用于表示一个查询结果集。
                提供的主要方法:
                boolean next():让结果集向下移动一条记录的位置，如果有该记录则返回true

                若干get方法，用于获取指定字段的值
                int getInt(String columnLabel):获取指定字段的值，该字段值应当是整数类型
                String getString(String columnLabel):获取指定字段的值，该字段值应当是字符串类型(对应数据库中的CHAR,VARCHAR)
                还有其他类型的get方法，道理相同。

             */
            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int salary = rs.getInt("salary");
                String title = rs.getString("title");
                /*
                    获取字段值还提供了一组重载方法，可以根据指定的字段下标获取
                    需要注意:这里的字段下标从1开始。1表示结果集第一个字段。
                    这样做的可读性差
                 */
//                int id = rs.getInt(1);//获取结果集第一个字段的值
//                String name = rs.getString(2);
//                int salary = rs.getInt(3);
//                String title = rs.getString(4);
                System.out.println(id+","+name+","+salary+","+title);
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
}
